package com.tgm.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.tgm.domain.common.PageResult;
import com.tgm.domain.common.Result;
import com.tgm.domain.dto.*;
import com.tgm.domain.entity.ConsumptionRecord;
import com.tgm.domain.vo.ConsumptionShowVO;
import com.tgm.domain.vo.HeatMapVO;
import com.tgm.domain.vo.StatisticsVO;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * 消费记录表(ConsumptionRecord)表服务接口
 *
 * @author makejava
 * @since 2025-10-20 20:59:28
 */
public interface ConsumptionRecordService extends IService<ConsumptionRecord> {

    /**
     * 分页查询消费记录
     * @param consumptionQueryDTO
     * @return
     */
    PageResult<ConsumptionShowVO> queryByPage(ConsumptionQueryDTO consumptionQueryDTO);

    /**
     * 统计消费趋势（折线图）
     * @param statisticsTrendDTO
     * @return
     */
    StatisticsVO statisticsTrend(StatisticsTrendDTO statisticsTrendDTO);

    /**
     * 统计消费类型饼图
     * @param statisticsPieDTO
     * @return
     */
    StatisticsVO statisticsPie(StatisticsPieDTO statisticsPieDTO);

    /**
     * 统计消费地点热力图
     * @param heatMapDTO
     * @return
     */
    List<HeatMapVO> statHeatMapData(HeatMapDTO heatMapDTO);

    /**
     * 导入数据
     * @param file
     * @return
     */
    Result importData(MultipartFile file) throws IOException;

    void exportConsumptionExcel(ExcelExportQuery query, HttpServletResponse response) throws IOException;
}

